#include <app/VirtualServer.h>
#include <app/TrueClient.h>
#include <router/RouterClient.h>


VirtualServer::VirtualServer(uint16_t port, uint32_t rule_id):
    tcp_server(port),
    App(get_sockfd())
{
    this->rule_id = rule_id;
}

uint32_t VirtualServer::get_rule_id()
{
    return rule_id;
}

void VirtualServer::fd_hander()
{
    while (true)
    {
        int client_sock = accept();
        if (client_sock < 0) {
            if (errno == EAGAIN || errno == EWOULDBLOCK) {
                // 没有连接请求需要处理，可以做一些其他的事情
                // ...
            } else {
                // 出现错误，需要进行错误处理
                // ...
            }
            break;
        } 
        else {
            std::shared_ptr<TrueClient> client = std::make_shared<TrueClient>(client_sock);
            routerctl.notify_new_client_connect(shared_from_this(), client);
        }
    }
}

// 不会收到message  什么也不做
void VirtualServer::message_hander(message msg)
{
    
}